home *** CD-ROM | disk | FTP | other *** search
/ PC Gamer (Italian) 30 / PC Gamer IT CD 30 1-2.iso / MOTS / GAMEDATA / RESOURCE / JKMRES.GOO / cog_exp_cpel.cog < prev    next >
Text File  |  1998-02-25  |  3KB  |  140 lines

  1. # Jedi Knight Missions Cog Script
  2. #
  3. # CPEL.COG
  4. #
  5. # EXPLOSION SCRIPT - Carbonite Pellet
  6. #
  7. # [RF]
  8. #
  9. # (C) 1997 LucasArts Entertainment Co. All Rights Reserved
  10.  
  11. symbols
  12.  
  13. message     created
  14.  
  15. template        goob=concrifle                                local
  16. template        gunk=+carbchunks                            local
  17.  
  18. sound       outSound=cpelletexplo.wav                local
  19.  
  20. thing       pellet                                        local
  21. thing       frozen                              local
  22.  
  23. vector      frozenpos                           local
  24. vector      pelletpos                           local
  25.  
  26. int         pelletdist                          local
  27.  
  28. flex        freezeradius=10.0                            local
  29. flex        maxfreezetime=10.0                  local
  30. flex        freezetime                          local
  31.  
  32.  
  33. end
  34.  
  35. # ========================================================================================
  36.  
  37. code
  38.  
  39. created:
  40. //    Print("Pellet COG Running!");
  41.  
  42.    pellet = GetSenderRef();
  43.  
  44.     PlaySoundThing(outSound, pellet, 1.0, -1, -1, 0);
  45.  
  46. //    CreateThing(goob, pellet);
  47.     CreateThingNR(gunk, pellet);
  48.  
  49.     pelletpos =    GetThingPos(pellet);
  50.  
  51.         // Do we need to freeze ourselves?
  52.     frozen = GetLocalPlayerThing();
  53.     frozenpos = GetThingPos(frozen);
  54.  
  55.     pelletdist = VectorDist(frozenpos, pelletpos) * 10;
  56.  
  57.     if (pelletdist < freezeradius)
  58. //    if (!(GetActorFlags(frozen) & 0x100))
  59.     if (HasLOS(frozen, pellet))
  60.     {
  61.         freezetime = (maxfreezetime * (freezeradius - pelletdist)) / freezeradius;
  62.  
  63. //        Print("Froze myself!");
  64. //        SkillTarget(frozen, pellet, 1035, freezetime);
  65.         SendMessageEx(GetThingClassCog(frozen), skill, 1035, freezetime, 0, 0);
  66. //        SendMessage(GetThingClassCog(frozen), user7);
  67.     }
  68.  
  69.     // If we are a client, stop here.
  70.     if (IsMulti())
  71.         if (!IsServer())
  72.         {
  73.             DestroyThing(pellet);
  74.             Return;
  75.         }
  76.  
  77. //    print("Looking...");
  78.  
  79.         // Check for other actor targets.
  80.    frozen = FirstThingInView(pellet, 180, freezeradius, 0x004);
  81.  
  82.     while (frozen != -1)
  83.     {
  84. //        print("Found something...");
  85.  
  86.             // Don't mess with inanimate objects.
  87.         if (!(GetActorFlags(frozen) & 0x100))
  88. //            // Don't mess with other players.
  89. //        if (!(GetThingFlags(frozen) & 0x400))
  90.             // Double check LOS.
  91.         {
  92.             if (HasLOS(frozen, pellet))
  93.             {
  94.                 frozenpos = GetThingPos(frozen);
  95.         
  96.                 pelletdist = VectorDist(frozenpos, pelletpos) * 10;
  97.     
  98.                 freezetime = (maxfreezetime * (freezeradius - pelletdist)) / freezeradius;
  99.         
  100. //                print("Freezing Someone!");
  101. //                printflex(freezeTime);
  102.     
  103.                 if (freezetime > 0)        // Sanity check.
  104.                 {
  105.                         // Give the thing a chance to react.
  106.                     if (SendMessageEx(GetThingClassCog(frozen), skill, 1035, freezetime, frozen, 0) != 17)
  107.                     {
  108.                             // Before going into the default handler (in WEAP_CARBGUN_M.COG)
  109.                         SendMessageEx(GetInvCog(GetLocalPlayerThing(), 125), user0, 1, freezetime, frozen, 0);
  110.                     }
  111.                 }
  112.     
  113. //             if(GetThingType(frozen) == 10)      // OTHER PLAYER
  114. //                    SkillTarget(frozen, pellet, 1035, freezetime);
  115. //                else
  116.             }
  117. //            else
  118.             //{
  119.                 //print("No LOS!");
  120.             //}
  121.         }
  122. //        else
  123. //        {
  124. //            print("Thing Flags: ");
  125. //            printint(GetThingFlags(frozen));
  126. //        }
  127. //        else
  128. //        {
  129. //            print("Actor Flags: ");
  130. //            printint(GetActorFlags(frozen));
  131. //        }
  132.  
  133.         frozen = NextThingInView();
  134.     }
  135.  
  136.         // Buh bye.
  137.     DestroyThing(pellet);
  138.     Return;
  139. end
  140.